{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plot Comparisons\n",
    "\n",
    "`comparisons` and `plot_comparisons` are a part of Bambi's sub-package `plots` that feature a set of functions used to interpret complex regression models. This sub-package is inspired by the R package [marginaleffects](https://marginaleffects.com/chapters/predictions.html#conditional-predictions). These two functions allow the modeler to **compare** the predictions made by a model for different contrast and covariate values. Below, it is described why comparing predictions is useful in interpreting generalized linear models (GLMs), how this methodology is implemented in Bambi, and how to use `comparisons` and `plot_comparisons`. It is assumed that the reader is familiar with the basics of GLMs. If not, refer to the Bambi [Basic Building Blocks](https://bambinos.github.io/bambi/notebooks/how_bambi_works.html#Link-functions) example.\n",
    "\n",
    "Due to the link function in a GLM, there are typically three quantities of interest to interpret:\n",
    "\n",
    "1. the linear predictor $\\eta = X\\beta$ where $X$ is an $n$ x $p$ matrix of explanatory variables.\n",
    "2. the mean $\\mu = g^{-1}(\\eta)$ where the link function $g(\\cdot)$ relates the linear predictor to the mean of the outcome variable $\\mu = g^{-1}(\\eta) = g^{-1}(X\\beta)$\n",
    "3. the response variable $Y \\sim \\mathcal{D}(\\mu, \\theta)$ where $\\mu$ is the mean parameter and $\\theta$ is (possibly) a vector that contains all the other \"auxiliary\" parameters of the distribution.\n",
    " \n",
    "Often, with GLMs, $\\eta$ is linear in the parameters, but nonlinear in relation of inputs to the outcome $Y$ due to the link function $g$. Thus, as modelers, we are usually more interested in interpreting (2) and (3). For example, in logistic regression, the linear predictor is on the log-odds scale, but the quantity of interest is on the probability scale. In Poisson regression, the linear predictor is on the log-scale, but the response variable is on the count scale. Referring back to logistic regression, a specified difference in one of the $x$ variables does _not_ correspond to a constant difference in the the probability of the outcome.\n",
    "\n",
    "It is often helpful with GLMs, for the modeler and audience, to have a summary that gives the expected difference in the outcome corresponding to a unit difference in each of the input variables. Thus, the goal of `comparisons` and `plot_comparisons` is to provide the modeler with a summary and visualization of the average predicted difference."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Average Predictive Differences\n",
    "\n",
    "Here, we adopt the notation from Chapter 14.4 of [Regression and Other Stories](https://avehtari.github.io/ROS-Examples/) to describe average predictive differences. Assume we have fit a Bambi model predicting an outcome $Y$ based on inputs $X$ and parameters $\\theta$. Consider the following scalar inputs:\n",
    "\n",
    "$$w: \\text{the input of interest}$$\n",
    "$$c: \\text{all the other inputs}$$\n",
    "$$X = (w, c)$$\n",
    "\n",
    "Suppose for the input of interest, we are interested in comparing $w^{\\text{high}}$ to $w^{\\text{low}}$ (perhaps age = $60$ and $40$ respectively) with all other inputs $c$ held constant. The _predictive difference_ in the outcome changing **only** $w$ is:\n",
    "\n",
    "$$\\text{average predictive difference} = \\mathbb{E}(y|w^{\\text{high}}, c, \\theta) - \\mathbb{E}(y|w^{\\text{low}}, c, \\theta)$$\n",
    "\n",
    "Selecting the maximum and minimum values of $w$ and averaging over all other inputs $c$ in the data gives you a new \"hypothetical\" dataset and corresponds to counting all pairs of transitions of $(w^\\text{low})$ to $(w^\\text{high})$, i.e., differences in $w$ with $c$ held constant. The difference between these two terms is the average predictive difference."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Computing Average Predictive Differences\n",
    "\n",
    "The objective of `comparisons` and `plot_comparisons` is to compute the expected difference in the outcome corresponding to three different scenarios for $w$ and $c$ where $w$ is either provided by the user, else a default value is computed by Bambi (described in the default values section). The three scenarios are:\n",
    "\n",
    "1. user provided values for $c$.\n",
    "2. a grid of equally spaced and central values for $c$.\n",
    "3. empirical distribution (original data used to fit the model) for $c$. \n",
    "\n",
    "In the case of (1) and (2) above, Bambi assembles all pairwise combinations (transitions) of $w$ and $c$ into a new \"hypothetical\" dataset. In (3), Bambi uses the original $c$, but replaces $w$ with the user provided value or the default value computed by Bambi. In each scenario, predictions are made on the data using the fitted model. Once the predictions are made, comparisons are computed using the posterior samples by taking the difference in the predicted outcome for each pair of transitions. The average of these differences is the average predictive difference. \n",
    "\n",
    "Thus, the goal of `comparisons` and `plot_comparisons` is to provide the modeler with a summary and visualization of the average predictive difference. Below, we demonstrate how to compute and plot average predictive differences with `comparisons` and `plot_comparions` using several examples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import arviz as az\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import warnings\n",
    "\n",
    "import bambi as bmb\n",
    "\n",
    "warnings.simplefilter(action=\"ignore\", category=FutureWarning)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Zero Inflated Poisson"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We model and predict how many fish are caught by visitors at a state park using survey [data](https://stats.idre.ucla.edu/stat/data/fish.csv). Many visitors catch zero fish, either because they did not fish at all, or because they were unlucky. We would like to explicitly model this bimodal behavior (zero versus non-zero) using a Zero Inflated Poisson model, and to compare how different inputs of interest $w$ and other covariate values $c$ are associated with the number of fish caught. The dataset contains data on 250 groups that went to a state park to fish. Each group was questioned about how many fish they caught (`count`), how many children were in the group (`child`), how many people were in the group (`persons`), if they used a live bait and whether or not they brought a camper to the park (`camper`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "fish_data = pd.read_csv(\"https://stats.idre.ucla.edu/stat/data/fish.csv\")\n",
    "cols = [\"count\", \"livebait\", \"camper\", \"persons\", \"child\"]\n",
    "fish_data = fish_data[cols]\n",
    "fish_data[\"child\"] = fish_data[\"child\"].astype(int)\n",
    "fish_data[\"livebait\"] = pd.Categorical(fish_data[\"livebait\"])\n",
    "fish_data[\"camper\"] = pd.Categorical(fish_data[\"camper\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Initializing NUTS using jitter+adapt_diag...\n",
      "Multiprocess sampling (4 chains in 4 jobs)\n",
      "NUTS: [psi, Intercept, livebait, camper, persons, child]\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f98d3d3cf0f24a83a298da9deaca4de0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 5 seconds.\n"
     ]
    }
   ],
   "source": [
    "fish_model = bmb.Model(\n",
    "    \"count ~ livebait + camper + persons + child\", \n",
    "    fish_data, \n",
    "    family=\"zero_inflated_poisson\"\n",
    ")\n",
    "\n",
    "fish_idata = fish_model.fit(\n",
    "    draws=1000, \n",
    "    target_accept=0.95, \n",
    "    random_seed=1234, \n",
    "    chains=4\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### User Provided Values\n",
    "\n",
    "First, an example of scenario 1 (user provided values) is given below. In both `plot_comparisons` and `comparisons`, $w$ and $c$ are represented by `contrast` and `conditional`, respectively. The modeler has the ability to pass their own values for `contrast` and `conditional` by using a dictionary where the key-value pairs are the covariate and value(s) of interest. For example, if we wanted to compare the number of fish caught for $4$ versus $1$ `persons` conditional on a range of `child` and `livebait` values, we would pass the following dictionary in the code block below. By default, for $w$, Bambi compares $w^\\text{high}$ to $w^\\text{low}$. Thus, in this example, $w^\\text{high}$ = 4 and $w^\\text{low}$ = 1. The user is not limited to passing a list for the values. A `np.array` can also be used. Furthermore, Bambi by default, maps the order of the dict keys to the main, group, and panel of the matplotlib figure. Below, since `child` is the first key, this is used for the x-axis, and `livebait` is used for the group (color). If a third key was passed, it would be used for the panel (facet)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Default computed for unspecified variable: camper\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAEmCAYAAAAqQEcCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJ59JREFUeJzt3X9YlHW+//HXgDKgwngIGQZBxMISce2krkez/HFWkquvZrlmv1xda0/mjxOxHo085o9Tou5Zc69jUnZtaldruac07biRnC3RYi1z4+oHpbZhelYIM51BDFC4v38QkyM/pGGGexiej+uaK+7P/Zn7fo9edL38fD73ZyyGYRgCAABAuwoxuwAAAIDOiBAGAABgAkIYAACACQhhAAAAJiCEAQAAmIAQBgAAYAJCGAAAgAkIYQAAACboYnYB/lZXV6eTJ08qMjJSFovF7HIAAECQMwxDFRUVio+PV0hI8+NdQR/CTp48qcTERLPLAAAAncyJEyeUkJDQ7HlTQ1hubq5yc3N17NgxSdLAgQP1+OOPKyMjQ1J9kly+fLk2btyoM2fOaPjw4Xr66ac1cODAVt8jMjJSUv0fRFRUlM8/AwAAwKVcLpcSExPdGaQ5poawhIQErVq1Stdcc40kacuWLbrtttv04YcfauDAgVqzZo3Wrl2rzZs3q3///nriiSc0fvx4HT58+IofrEHDFGRUVBQhDAAAtJsrLYOyBNoXeEdHR+s3v/mNZs2apfj4eGVmZmrRokWSpOrqatntdq1evVoPPvhgq67ncrlks9nkdDoJYQAAwO9amz0C5unI2tpavfzyy6qsrNSIESNUUlKisrIypaenu/tYrVaNHj1ahYWFzV6nurpaLpfL4wUAABBoTA9hH3/8sXr06CGr1arZs2drx44dSk1NVVlZmSTJbrd79Lfb7e5zTcnJyZHNZnO/WJQPAAACkelPR1577bUqKirS2bNn9eqrr2rGjBkqKChwn798PtUwjBbnWLOzs5WVleU+blgcBwAA/MMwDF28eFG1tbVml9IuQkND1aVLlzZvfWV6CAsLC3MvzB86dKgOHjyo3/3ud+51YGVlZXI4HO7+5eXljUbHLmW1WmW1Wv1bNAAAkCTV1NSotLRU58+fN7uUdtWtWzc5HA6FhYV5fQ3TQ9jlDMNQdXW1kpOTFRcXp/z8fP3jP/6jpPq/6IKCAq1evdrkKgEAQF1dnUpKShQaGqr4+HiFhYUF/cbohmGopqZGp06dUklJiVJSUlrckLUlpoawxx57TBkZGUpMTFRFRYVefvll7d27V3l5ebJYLMrMzNTKlSuVkpKilJQUrVy5Ut26ddM999xjZtkAAED1gyN1dXVKTExUt27dzC6n3URERKhr16766quvVFNTo/DwcK+uY2oI+/rrrzV9+nSVlpbKZrPpJz/5ifLy8jR+/HhJ0sKFC/Xdd99pzpw57s1a9+zZ0+o9woJSTaW0Mr7+58dOSmHdza0HANDpeTsS1JH54jObGsJ+//vft3jeYrFo2bJlWrZsWfsUBAAA0E46X3QFAAAIAIQwAADgF2PGjFFmZqYkqW/fvlq3bp3Prr13715ZLBadPXu2Tde5tMb2FnBPRwIAgOBz8OBBde8eeOuYt2/frq5du7qP+/btq8zMzHYJZoQwAADgd7169TK7hCZFR0ebdm+mIwEAgN9dOh15991366677vI4f+HCBcXExGjTpk2S6vfjWrNmjfr166eIiAgNHjxYr7zySqPrvvvuuxo8eLDCw8M1fPhwffzxx+5zp0+f1t13362EhAR169ZNgwYN0ksvveTx/kunI8eMGaOvvvpKjzzyiCwWi9/3PCOEAQCAdnXvvfdq165dOnfunLvtzTffVGVlpaZMmSJJ+vd//3dt2rRJubm5+vTTT/XII4/ovvvu8/hqQ0n6t3/7N/3nf/6nDh48qNjYWE2aNEkXLlyQJFVVVWnIkCH6n//5H33yySf6l3/5F02fPl3vvfdek3Vt375dCQkJWrFihUpLS1VaWuqnP4F6TEcCAIB2dcstt6h79+7asWOHpk+fLknaunWrJk6cqKioKFVWVmrt2rV66623NGLECElSv3799M477+jZZ5/V6NGj3ddaunSpe3/RLVu2KCEhQTt27NCdd96p3r17a8GCBe6+8+fPV15env77v/9bw4cPb1RXdHS0QkNDFRkZqbi4OH/+EUgihAEAgHbWtWtXTZ06VX/4wx80ffp0VVZWaufOndq6daskqbi4WFVVVe5w1aCmpsb9VYYNGkKaVB+irr32Wn322WeSpNraWq1atUrbtm3T3//+d1VXV6u6ujpgHhAghAEAgHZ37733avTo0SovL1d+fr7Cw8OVkZEhqf47KSVp9+7d6t27t8f7rFbrFa/d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ad++fZo4caLi4+NlsVj02muvmV0SgO/l5ORo2LBhioyMVGxsrCZPnqzDhw+bXZbXCGEm2LZtmzIzM7V48WJ9+OGHuummm5SRkaHjx4+bXRrQ6VVWVmrw4MFav3692aUAuExBQYHmzp2rAwcOKD8/XxcvXlR6eroqKyvNLs0rbFFhguHDh+uGG25Qbm6uu23AgAGaPHmycnJyTKwMwKUsFot27NihyZMnm10KgCacOnVKsbGxKigo0M0332x2OT8aI2HtrKamRocOHVJ6erpHe3p6ugoLC02qCgCAjsfpdEqSoqOjTa7EO4SwdvbNN9+otrZWdrvdo91ut6usrMykqgAA6FgMw1BWVpZGjRqltLQ0s8vxShezC+isLBaLx7FhGI3aAABA0+bNm6ePPvpI77zzjtmleI0Q1s5iYmIUGhraaNSrvLy80egYAABobP78+dq1a5f27dunhIQEs8vxGtOR7SwsLExDhgxRfn6+R3t+fr5GjhxpUlUAAAQ+wzA0b948bd++XW+99ZaSk5PNLqlNGAkzQVZWlqZPn66hQ4dqxIgR2rhxo44fP67Zs2ebXRrQ6Z07d05ffPGF+7ikpERFRUWKjo5Wnz59TKwMwNy5c7V161bt3LlTkZGR7lklm82miIgIk6v78diiwiQbNmzQmjVrVFpaqrS0ND311FMd8vFaINjs3btXY8eObdQ+Y8YMbd68uf0LAuDW3NrpTZs2aebMme1bjA8QwgAAAEzAmjAAAAATEMIAAABMQAgDAAAwASEMAADABIQwAAAAExDCAAAATEAIAwAAMAEhDECndezYMVksFhUVFTXbZ/PmzerZs6f7eNmyZbr++utbvO7MmTM1efJkn9QIIHgRwgCgBdOmTdORI0fMLgNAEOK7IwGgBRERER3yO+kABD5GwgAEvbq6Oq1evVrXXHONrFar+vTpoyeffNJ9/ssvv9TYsWPVrVs3DR48WH/5y1/c5y6fjrxcbW2tsrKy1LNnT1111VVauHCh+DY4AK1BCAMQ9LKzs7V69WotWbJExcXF2rp1q+x2u/v84sWLtWDBAhUVFal///66++67dfHixVZd+7e//a2ef/55/f73v9c777yjb7/9Vjt27PDXRwEQRJiOBBDUKioq9Lvf/U7r16/XjBkzJElXX321Ro0apWPHjkmSFixYoFtvvVWStHz5cg0cOFBffPGFrrvuuitef926dcrOztaUKVMkSc8884zefPNN/3wYAEGFkTAAQe2zzz5TdXW1/vmf/7nZPj/5yU/cPzscDklSeXn5Fa/tdDpVWlqqESNGuNu6dOmioUOHtqFiAJ0FIQxAUGvNovquXbu6f7ZYLJLq15EBgD8RwgAEtZSUFEVEROjPf/6zz69ts9nkcDh04MABd9vFixd16NAhn98LQPBhTRiAoBYeHq5FixZp4cKFCgsL04033qhTp07p008/bXGKsrUefvhhrVq1SikpKRowYIDWrl2rs2fPtr1wAEGPEAYg6C1ZskRdunTR448/rpMnT8rhcGj27Nk+ufavf/1rlZaWaubMmQoJCdGsWbN0++23y+l0+uT6AIKXxWBDGwAAgHbHmjAAAAATEMIAAABMQAgDAAAwASEMAADABIQwAAAAExDCAAAATEAIAwAAMAEhDAAAwASEMAAAABMQwgAAAExACAMAADABIQwAAMAE/x9wzODHnwUPNgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 700x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = bmb.interpret.plot_comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast={\"persons\": [1, 4]},\n",
    "    conditional={\"child\": [0, 1, 2], \"livebait\": [0, 1]},\n",
    ") \n",
    "fig.set_size_inches(7, 3)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The plot above shows that, comparing $4$ to $1$ persons given $0$ children and using livebait, the expected difference is about $26$ fish. When not using livebait, the expected difference decreases substantially to about $5$ fish. Using livebait with a group of people is associated with a much larger expected difference in the number of fish caught. \n",
    "\n",
    "`comparisons` can be called to view a summary dataframe that includes the term $w$ and its contrast, the specified `conditional` covariate, and the expected difference in the outcome with the uncertainty interval (by default the 94% highest density interval is computed). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Default computed for unspecified variable: camper\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>child</th>\n",
       "      <th>livebait</th>\n",
       "      <th>camper</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.842881</td>\n",
       "      <td>2.821815</td>\n",
       "      <td>7.115986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>26.425842</td>\n",
       "      <td>23.755334</td>\n",
       "      <td>29.280517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.206022</td>\n",
       "      <td>0.677176</td>\n",
       "      <td>1.803814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6.573751</td>\n",
       "      <td>5.423433</td>\n",
       "      <td>7.621986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.303025</td>\n",
       "      <td>0.148255</td>\n",
       "      <td>0.478763</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.649977</td>\n",
       "      <td>1.103601</td>\n",
       "      <td>2.187071</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      term estimate_type   value  child livebait camper   estimate  \\\n",
       "0  persons          diff  (1, 4)      0        0      1   4.842881   \n",
       "1  persons          diff  (1, 4)      0        1      1  26.425842   \n",
       "2  persons          diff  (1, 4)      1        0      1   1.206022   \n",
       "3  persons          diff  (1, 4)      1        1      1   6.573751   \n",
       "4  persons          diff  (1, 4)      2        0      1   0.303025   \n",
       "5  persons          diff  (1, 4)      2        1      1   1.649977   \n",
       "\n",
       "   lower_3.0%  upper_97.0%  \n",
       "0    2.821815     7.115986  \n",
       "1   23.755334    29.280517  \n",
       "2    0.677176     1.803814  \n",
       "3    5.423433     7.621986  \n",
       "4    0.148255     0.478763  \n",
       "5    1.103601     2.187071  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast={\"persons\": [1, 4]},\n",
    "    conditional={\"child\": [0, 1, 2], \"livebait\": [0, 1]},\n",
    ") "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But why is `camper` also in the summary dataframe? This is because in order to peform predictions, Bambi is expecting a value for each covariate used to fit the model. Additionally, with GLM models, average predictive comparisons are conditional in the sense that the estimate depends on the values of all the covariates in the model. Thus, for unspecified covariates, `comparisons` and `plot_comparisons` computes a default value (mean or mode based on the data type of the covariate). Thus, $c$ = `child`, `livebait`, `camper`. Each row in the summary dataframe is read as \"comparing $4$ to $1$ persons conditional on $c$, the expected difference in the outcome is $y$.\""
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Multiple contrast values\n",
    "\n",
    "Users can also perform comparisons on multiple contrast values. For example, if we wanted to compare the number of fish caught between $(1, 2)$, $(1, 4)$, and $(2, 4)$ `persons` conditional on a range of values for `child` and `livebait`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Default computed for unspecified variable: camper\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>child</th>\n",
       "      <th>livebait</th>\n",
       "      <th>camper</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.529259</td>\n",
       "      <td>0.321399</td>\n",
       "      <td>0.791332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2.888830</td>\n",
       "      <td>2.579503</td>\n",
       "      <td>3.162645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.131938</td>\n",
       "      <td>0.069623</td>\n",
       "      <td>0.196654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.719383</td>\n",
       "      <td>0.590442</td>\n",
       "      <td>0.860085</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.033185</td>\n",
       "      <td>0.015712</td>\n",
       "      <td>0.053144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 2)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.180750</td>\n",
       "      <td>0.120842</td>\n",
       "      <td>0.247213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.842881</td>\n",
       "      <td>2.821815</td>\n",
       "      <td>7.115986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>26.425842</td>\n",
       "      <td>23.755334</td>\n",
       "      <td>29.280517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.206022</td>\n",
       "      <td>0.677176</td>\n",
       "      <td>1.803814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6.573751</td>\n",
       "      <td>5.423433</td>\n",
       "      <td>7.621986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.303025</td>\n",
       "      <td>0.148255</td>\n",
       "      <td>0.478763</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(1, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.649977</td>\n",
       "      <td>1.103601</td>\n",
       "      <td>2.187071</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.313622</td>\n",
       "      <td>2.382278</td>\n",
       "      <td>6.241083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>23.537012</td>\n",
       "      <td>20.853632</td>\n",
       "      <td>26.310769</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.074084</td>\n",
       "      <td>0.606115</td>\n",
       "      <td>1.614813</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5.854368</td>\n",
       "      <td>4.847737</td>\n",
       "      <td>6.855660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.269840</td>\n",
       "      <td>0.133072</td>\n",
       "      <td>0.426877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>persons</td>\n",
       "      <td>diff</td>\n",
       "      <td>(2, 4)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.469226</td>\n",
       "      <td>0.996442</td>\n",
       "      <td>1.964083</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value  child livebait camper   estimate  \\\n",
       "0   persons          diff  (1, 2)      0        0      1   0.529259   \n",
       "1   persons          diff  (1, 2)      0        1      1   2.888830   \n",
       "2   persons          diff  (1, 2)      1        0      1   0.131938   \n",
       "3   persons          diff  (1, 2)      1        1      1   0.719383   \n",
       "4   persons          diff  (1, 2)      2        0      1   0.033185   \n",
       "5   persons          diff  (1, 2)      2        1      1   0.180750   \n",
       "6   persons          diff  (1, 4)      0        0      1   4.842881   \n",
       "7   persons          diff  (1, 4)      0        1      1  26.425842   \n",
       "8   persons          diff  (1, 4)      1        0      1   1.206022   \n",
       "9   persons          diff  (1, 4)      1        1      1   6.573751   \n",
       "10  persons          diff  (1, 4)      2        0      1   0.303025   \n",
       "11  persons          diff  (1, 4)      2        1      1   1.649977   \n",
       "12  persons          diff  (2, 4)      0        0      1   4.313622   \n",
       "13  persons          diff  (2, 4)      0        1      1  23.537012   \n",
       "14  persons          diff  (2, 4)      1        0      1   1.074084   \n",
       "15  persons          diff  (2, 4)      1        1      1   5.854368   \n",
       "16  persons          diff  (2, 4)      2        0      1   0.269840   \n",
       "17  persons          diff  (2, 4)      2        1      1   1.469226   \n",
       "\n",
       "    lower_3.0%  upper_97.0%  \n",
       "0     0.321399     0.791332  \n",
       "1     2.579503     3.162645  \n",
       "2     0.069623     0.196654  \n",
       "3     0.590442     0.860085  \n",
       "4     0.015712     0.053144  \n",
       "5     0.120842     0.247213  \n",
       "6     2.821815     7.115986  \n",
       "7    23.755334    29.280517  \n",
       "8     0.677176     1.803814  \n",
       "9     5.423433     7.621986  \n",
       "10    0.148255     0.478763  \n",
       "11    1.103601     2.187071  \n",
       "12    2.382278     6.241083  \n",
       "13   20.853632    26.310769  \n",
       "14    0.606115     1.614813  \n",
       "15    4.847737     6.855660  \n",
       "16    0.133072     0.426877  \n",
       "17    0.996442     1.964083  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "multiple_values = bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast={\"persons\": [1, 2, 4]},\n",
    "    conditional={\"child\": [0, 1, 2], \"livebait\": [0, 1]}\n",
    ")\n",
    "\n",
    "multiple_values"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice how the contrast $w$ varies while the covariates $c$ are held constant. Currently, however, plotting multiple contrast values can be difficult to interpret since the contrast is \"abstracted\" away onto the y-axis. Thus, it would be difficult to interpret which portion of the plot corresponds to which contrast value. Therefore, it is currently recommended that if you want to plot multiple contrast values, call `comparisons` directly to obtain the summary dataframe and plot the results yourself."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Default contrast and conditional values\n",
    "\n",
    "Now, we move onto scenario 2 described above (grid of equally spaced and central values) in computing average predictive comparisons. You are not required to pass values for `contrast` and `conditional`. If you do not pass values, Bambi will compute default values for you. Below, it is described how these default values are computed.\n",
    "\n",
    "The default value for `contrast` is a _centered difference_ at the mean for a contrast variable with a numeric dtype, and _unique levels_ for a contrast varaible with a categorical dtype. For example, if the modeler is interested in the comparison of a $5$ unit increase in $w$ where $w$ is a numeric variable, Bambi computes the mean and then subtracts and adds $2.5$ units to the mean to obtain a _centered difference_. By default, if no value is passed for the contrast covariate, Bambi computes a one unit centered difference at the mean. For example, if only `contrast=\"persons\"` is passed, then $\\pm$ $0.5$ is applied to the mean of persons. If $w$ is a categorical variable, Bambi computes and returns the unique levels. For example, if $w$ has levels [\"high scool\", \"vocational\", \"university\"], Bambi computes and returns the unique values of this variable.\n",
    "\n",
    "The default values for `conditional` are more involved. Currently, by default, if a dict or list is passed to `conditional`, Bambi uses the ordering (keys if dict and elements if list) to determine which covariate to use as the main, group (color), and panel (facet) variable. This is the same logic used in `plot_comparisons` described above. Subsequently, the default values used for the `conditional` covariates depend on their ordering **and** dtype. Below, the psuedocode used for computing default values covariates passed to `conditional` is outlined:\n",
    "\n",
    "```python\n",
    "if v == \"main\":\n",
    "    \n",
    "    if v == numeric:\n",
    "        return np.linspace(v.min(), v.max(), 50)\n",
    "    elif v == categorical:\n",
    "        return np.unique(v)\n",
    "\n",
    "elif v == \"group\":\n",
    "    \n",
    "    if v == numeric:\n",
    "        return np.quantile(v, np.linspace(0, 1, 5))\n",
    "    elif v == categorical:\n",
    "        return np.unique(v)\n",
    "\n",
    "elif v == \"panel\":\n",
    "    \n",
    "    if v == numeric:\n",
    "        return np.quantile(v, np.linspace(0, 1, 5))\n",
    "    elif v == categorical:\n",
    "        return np.unique(v)\n",
    "```\n",
    "\n",
    "Thus, letting Bambi compute default values for `conditional` is equivalent to creating a hypothetical \"data grid\" of new values. Let's say we are interested in comparing the number of fish caught for the contrast `livebait` conditional on `persons` and `child`. This time, let's call `comparisons` first to gain an understanding of the data generating the plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Default computed for contrast variable: livebait\n",
      "Default computed for conditional variable: persons, child\n",
      "Default computed for unspecified variable: camper\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>persons</th>\n",
       "      <th>child</th>\n",
       "      <th>camper</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.701079</td>\n",
       "      <td>1.277529</td>\n",
       "      <td>2.120203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.424020</td>\n",
       "      <td>0.294745</td>\n",
       "      <td>0.551709</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0.106643</td>\n",
       "      <td>0.065813</td>\n",
       "      <td>0.155744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.027060</td>\n",
       "      <td>0.012615</td>\n",
       "      <td>0.043123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.060650</td>\n",
       "      <td>3.318717</td>\n",
       "      <td>4.815739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.011465</td>\n",
       "      <td>0.765103</td>\n",
       "      <td>1.259941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0.254208</td>\n",
       "      <td>0.162271</td>\n",
       "      <td>0.355378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.064458</td>\n",
       "      <td>0.031792</td>\n",
       "      <td>0.100255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>9.713450</td>\n",
       "      <td>8.362112</td>\n",
       "      <td>11.085402</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2.417827</td>\n",
       "      <td>1.936909</td>\n",
       "      <td>2.922231</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value  persons  child camper  estimate  \\\n",
       "0  livebait          diff  (0, 1)        1      0      1  1.701079   \n",
       "1  livebait          diff  (0, 1)        1      1      1  0.424020   \n",
       "2  livebait          diff  (0, 1)        1      2      1  0.106643   \n",
       "3  livebait          diff  (0, 1)        1      3      1  0.027060   \n",
       "4  livebait          diff  (0, 1)        2      0      1  4.060650   \n",
       "5  livebait          diff  (0, 1)        2      1      1  1.011465   \n",
       "6  livebait          diff  (0, 1)        2      2      1  0.254208   \n",
       "7  livebait          diff  (0, 1)        2      3      1  0.064458   \n",
       "8  livebait          diff  (0, 1)        3      0      1  9.713450   \n",
       "9  livebait          diff  (0, 1)        3      1      1  2.417827   \n",
       "\n",
       "   lower_3.0%  upper_97.0%  \n",
       "0    1.277529     2.120203  \n",
       "1    0.294745     0.551709  \n",
       "2    0.065813     0.155744  \n",
       "3    0.012615     0.043123  \n",
       "4    3.318717     4.815739  \n",
       "5    0.765103     1.259941  \n",
       "6    0.162271     0.355378  \n",
       "7    0.031792     0.100255  \n",
       "8    8.362112    11.085402  \n",
       "9    1.936909     2.922231  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contrast_df = bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=[\"persons\", \"child\"],\n",
    ")\n",
    "\n",
    "contrast_df.head(10)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Before we talk about the summary output, you should have noticed that messages are being logged to the console. By default `interpret` is _verbose_ and logs a message to the console if a default value is computed for covariates in `conditional` and `contrast`. This is useful because unless the documentation is read, it can be difficult to tell which covariates are having default values computed for. Thus, Bambi has a config file `bmb.config[\"INTERPRET_VERBOSE\"]` where we can specify whether or not to log messages. By default, this is set to true. To turn off logging, set `bmb.config[\"INTERPRET_VERBOSE\"] = False`. From here on, we will turn off logging.\n",
    "\n",
    "As `livebait` was encoded as a categorical dtype, Bambi returned the unique levels of $[0, 1]$ for the contrast. `persons` and `child` were passed as the first and second element and thus act as the main and group variables, respectively. It can be see from the output above, that an equally spaced grid was used to compute the values for `persons`, whereas a quantile based grid was used for `child`. Furthermore, as `camper` was unspecified, the mode was used as the default value. Let's go ahead and plot the comparisons."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "bmb.config[\"INTERPRET_VERBOSE\"] = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8fEtrhEAALQt9k2b9NVTM6RLHqhdW15ev3/pEkWNGeP1644bN85l+8UXX1ReXp62b9+uXr16ef16DVoUwvbu3ev8ubi4WGVlZc5th8Oh/Px8XX311d6rTvWBLy4uTl27dtXtt9+uF198UXFxcc22r66uVnV1tXPbbrd7tR4AAOAe0zRlnj/vXluHQ+UvvNgogH13IsmQyl9coC4ZGTKCg694PiM8XIZhtLRkORwO/e///q+qqqqUkZHR4ve3RItC2C233OKcm9XUsGN4eLh+//vfe624rKws3XfffUpOTlZJSYmeffZZjRw5Urt371ZoaGiT78nNzdX8+fO9VgMAAPCMef68DvXr76WT1feIfTZwkFvNb9izW0ZEhNun37dvnzIyMnThwgVdddVVWrt2rdLS0jyt1i0tCmElJSUyTVPXXnutduzYodjYWOexzp07Ky4uTsFupFN3PfDAA86f09PTNWDAACUnJ2vjxo265557mnxPTk6OsrOzndt2u11JSUleqwkAALQ/N9xwg4qKinT69Gn9+c9/1sSJE1VYWOjTINaiEJacnCxJqqur80kxV5KQkKDk5GQdPny42TahoaHN9pIBAAD/McLDdcOe3W61Pbdrl47//Ikrtkt6/TVFDBjg1rVbonPnzrr++uslSQMGDNDOnTu1dOlSvfbaay06T0t4NDFfkj777DMVFBSooqKiUSh77rnnWl1YU77++msdP35cCQkJPjk/AADwHsMw3B4S7DJ0qELi41VbXt70vDDDUIjNpi5Dh7o1J6y1TNN0mWPuCx6FsD/84Q968skn1b17d8XHx7tMfDMMw+0QdvbsWR05csS5XVJSoqKiIsXExCgmJkbz5s3Tvffeq4SEBB09elTPPPOMunfvrgkTJnhSNgAACFBGcLBsz+TU3wVpGK5B7LucYXsmxycB7JlnnlFWVpaSkpJ05swZrV69WgUFBcrPz/f6tS7mUQh74YUX9OKLL2r27NmtuviuXbs0YsQI53bDXK6JEycqLy9P+/bt09tvv63Tp08rISFBI0aM0Jo1axQZGdmq6wIAgMATNWaMtHSJyhfkqvaiFRhCbDbZnsnxyfIUklReXq6HH35YpaWlio6OVu/evZWfn6877rjDJ9drYJhmU31+lxcVFaWioiJde+21vqjJq+x2u6Kjo1VZWamoqCirywEAoN26cOGC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IOvWrdOECRMUHBzs3OdwOGQYhoKCglRdXe1yrCOjJwzooEzT1PTp07V27VoVFBQQwNBipmmqurra6jIQYEaNGqV9+/a57Js8ebJuvPFGzZ49mwB2EUJYO3P27FkdOXLEuV1SUqKioiLFxMTommuusbAyBJqpU6dq1apVeueddxQZGamysjJJUnR0tMLDwy2uDoHmmWeeUVZWlpKSknTmzBmtXr1aBQUFys/Pt7o0BJjIyMhGc0u7dOmibt26Mef0EoSwdmbXrl0aMWKEczs7O1uSNHHiRK1YscKiqhCI8vLyJEmZmZku+5cvX65Jkyb5vyAEtPLycj388MMqLS1VdHS0evfurfz8fN1xxx1Wlwa0WcwJAwAAsADrhAEAAFiAEAYAAGABQhgAAIAFCGEAAAAWIIQBAABYgBAGAABgAUIYAACABQhhAAAAFiCEAQAAWIAQBqDDczgcqqurs7oMAB0MIQxAm5OZmalp06Zp2rRp6tq1q7p166Zf//rXangKW01NjWbNmqWrr75aXbp00eDBg1VQUOB8/4oVK9S1a1f99a9/VVpamkJDQ3Xs2DEVFBRo0KBB6tKli7p27aqhQ4fq2LFjzvfl5eXpuuuuU+fOnXXDDTfov//7v13qMgxDb7zxhiZMmKCIiAilpqZq/fr1zuPffPONHnroIcXGxio8PFypqalavny5b/+xAAQsQhiANumtt95SSEiIPv30U/3nf/6nfve73+mNN96QJE2ePFkff/yxVq9erb179+q+++7T2LFjdfjwYef7z507p9zcXL3xxhs6cOCAYmJiNH78eN1+++3au3evPvnkE/385z+XYRiSpLVr1+qpp57S008/rf379+uJJ57Q5MmT9eGHH7rUNX/+fN1///3au3evfvSjH+mhhx7SqVOnJEnPPvusiouL9d577+ngwYPKy8tT9+7d/fQvBiDQ8ABvAG1OZmamKioqdODAAWdImjNnjtavX68NGzYoNTVVX375pRITE53vGT16tAYNGqQFCxZoxYoVmjx5soqKitSnTx9J0qlTp9StWzcVFBTo9ttvb3TNoUOHqlevXnr99ded++6//35VVVVp48aNkup7wn7961/rP/7jPyRJVVVVioyM1LvvvquxY8fqrrvuUvfu3fXmm2/67N8GQNtBTxiANunWW291BjBJysjI0OHDh7Vr1y6ZpqmePXvqqquucr4KCwv1z3/+09m+c+fO6t27t3M7JiZGkyZN0g9/+EONGzdOS5cuVWlpqfP4wYMHNXToUJcahg4dqoMHD7rsu/icXbp0UWRkpCoqKiRJTz75pFavXq1bbrlFs2bN0rZt27zzjwGgTSKEAWh3goODtXv3bhUVFTlfBw8e1NKlS51twsPDXUKcJC1fvlyffPKJhgwZojVr1qhnz57avn278/il7U3TbLSvU6dOLtuGYTgn/WdlZenYsWOaMWOGTpw4oVGjRmnmzJle+Z0BtD2EMABt0sXhqGE7NTVVffv2lcPhUEVFha6//nqXV3x8/BXP27dvX+Xk5Gjbtm1KT0/XqlWrJEk33XSTtm7d6tJ227Ztuummm1pUd2xsrCZNmqSVK1dqyZIlLsObADqWEKsLAABPHD9+XNnZ2XriiSe0Z88e/f73v9fLL7+snj176qGHHtIjjzyil19+WX379tW//vUvffDBB7r55pv1ox/9qMnzlZSU6PXXX9ddd92lxMREHTp0SJ999pkeeeQRSdKvfvUr3X///erXr59GjRqlDRs26C9/+Yvef/99t2t+7rnn1L9/f/Xq1UvV1dX661//2uIQB6D9IIQBaJMeeeQRnT9/XoMGDVJwcLCmT5+un//855LqhxVfeOEFPf300/rqq6/UrVs3ZWRkNBvAJCkiIkL/+Mc/9NZbb+nrr79WQkKCpk2bpieeeEKSNH78eC1dulS//e1v9ctf/lIpKSlavny5MjMz3a65c+fOysnJ0dGjRxUeHq7bbrtNq1evbtW/A4C2i7sjAbQ5mZmZuuWWW7RkyRKrSwEAjzEnDAAAwAKEMAAAAAswHAkAAGABesIAAAAsQAgDAACwACEMAADAAoQwAAAACxDCAAAALEAIAwAAsAAhDAAAwAKEMAAAAAsQwgAAACzw/wM41qnz3cK5cQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 700x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = bmb.interpret.plot_comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=[\"persons\", \"child\"],\n",
    ") \n",
    "fig.set_size_inches(7, 3)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The plot shows us that the expected differences in fish caught comparing a group of people who use livebait and no livebait is not only conditional on the number of persons, but also children. However, the plotted comparisons for `child` = $3$ is difficult to interpret on a single plot. Thus, it can be useful to pass specific `group` and `panel` arguments to aid in the interpretation of the plot. Therefore, `subplot_kwargs` allows the user to manipulate the plotting by passing a dictionary where the keys are `{\"main\": ..., \"group\": ..., \"panel\": ...}` and the values are the names of the covariates to be plotted. Below, we plot the same comparisons as above, but this time we specify `group` and `panel` to both be `child`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8skn9cUXX+iaa67R0KFD9f3335tdGgCzuXnSs5QbpEnbpNF/k276fxX/nPQVDTlsx43NqdSwodxOUTkTuafaA2kreORRfHg8M5E7lFuaN8k9x1rn1WNJB2ZmyCiz//n71MH6jeCp736ns3xTPnv2bN133326//771a1bN82ZM0dJSUmaN2+e2aUBMJvbJz0LCa147NnF/17xT4asw4bc2JxK7hzKXTkTuaRqjTkzkTubm5o3Nx1rsK8eW0mLmPqN4KnvfqezdFN+8uRJbd68WYNPuxdh8ODBWreu5uGopaWlKioq8nsBsJ96Zbly0rNarrpUTHp2DpOeASapT47d2JxK7h3KXTkTeWx4rN/6uPA4x91D7yRN/fnaTc2bm4412FePrST8V1eoRXy85KnlZ06PRy3i4xX+qysa9fmWbsp//PFHlZWVKS7O/ypXXFyc8mr5jz0jI0NRUVG+V1JSUnOUCiDA6pXlyknPJFVvzJn0DDBbfXLs1ubUzUO5ByUP0sqbVur1X7+u5695Xq//+nVl3pRJQ25hTf352k3Nm5uONdhXj63EExqquCem/rxw2nn75+W4J6Y2eiI/SzfllTynHbhhGNXWVZo6daoKCwt9r3379jVHiQACrN5ZZtIzwLLqk2O3NqduH8pdORP59eddr57xPR17nE7R1J+v3dS8uelYg3312GoiBw/WOS/MUYvTLhi3iIvTOU14HJpk8UeitW/fXqGhodWuiufn51e7el7J6/XK6/U2R3kAgqhBWU65oeKxZ3vXVUzq1iauYsg6P+QBpqpPjiub07SsNHnk8ZvwzenNaeVQ7poeBTel1xSuHMMymvrzdWXzdurAgZrvtfZ41CIuzhHNm5uOtfLq8Q8PT6pozKsebwCuHltR5ODBihg4MOCPurN0U96yZUtdccUVWr16tUaOHOlbv3r1at14440mVgbAcionPQNgO25uTgclD1L/pP7akr9FB48dVEx4jC6PvdyRv4SAe7mpeXPTsUoVTapemFP9OeVxcY56TnlVntBQte7dK6CfaemmXJLS0tJ011136Ve/+pX69Omj+fPn6/vvv9d//ud/ml0aAAAIEDc3p5VDuQEnc1Pz5qZjlYJ39dhNLN+U33rrrSooKNAzzzyj3Nxcde/eXR9++KGSk5PNLg0AAAQQzSngbG5q3tx0rFJwrh67ieWbckka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",
      "text/plain": [
       "<Figure size 1200x300 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = bmb.interpret.plot_comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=[\"persons\", \"child\"],\n",
    "    subplot_kwargs={\"main\": \"persons\", \"group\": \"child\", \"panel\": \"child\"},\n",
    "    fig_kwargs={\"figsize\":(12, 3), \"sharey\": True},\n",
    "    legend=False\n",
    ") "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Unit level contrasts\n",
    "\n",
    "Evaluating average predictive comparisons at central values for the conditional covariates $c$ can be problematic when the inputs have a large variance since no single central value (mean, median, etc.) is representative of the covariate. This is especially true when $c$ exhibits bi or multimodality. Thus, it may be desirable to use the empirical distribution of $c$ to compute the predictive comparisons, and then average over a specific or set of covariates to obtain the average predictive comparisons. To achieve unit level contrasts, do not pass a parameter into `conditional` and/or specify `None`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>camper</th>\n",
       "      <th>child</th>\n",
       "      <th>persons</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.866907</td>\n",
       "      <td>0.626193</td>\n",
       "      <td>1.126094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.701079</td>\n",
       "      <td>1.277529</td>\n",
       "      <td>2.120203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.866907</td>\n",
       "      <td>0.626193</td>\n",
       "      <td>1.126094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1.011465</td>\n",
       "      <td>0.765103</td>\n",
       "      <td>1.259941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.866907</td>\n",
       "      <td>0.626193</td>\n",
       "      <td>1.126094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1.453594</td>\n",
       "      <td>0.994530</td>\n",
       "      <td>1.976997</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1.233152</td>\n",
       "      <td>0.912043</td>\n",
       "      <td>1.555600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>0.188026</td>\n",
       "      <td>0.093172</td>\n",
       "      <td>0.289529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.607238</td>\n",
       "      <td>0.397932</td>\n",
       "      <td>0.817309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.701079</td>\n",
       "      <td>1.277529</td>\n",
       "      <td>2.120203</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value camper  child  persons  estimate  \\\n",
       "0  livebait          diff  (0, 1)      0      0        1  0.866907   \n",
       "1  livebait          diff  (0, 1)      1      0        1  1.701079   \n",
       "2  livebait          diff  (0, 1)      0      0        1  0.866907   \n",
       "3  livebait          diff  (0, 1)      1      1        2  1.011465   \n",
       "4  livebait          diff  (0, 1)      0      0        1  0.866907   \n",
       "5  livebait          diff  (0, 1)      1      2        4  1.453594   \n",
       "6  livebait          diff  (0, 1)      0      1        3  1.233152   \n",
       "7  livebait          diff  (0, 1)      0      3        4  0.188026   \n",
       "8  livebait          diff  (0, 1)      1      2        3  0.607238   \n",
       "9  livebait          diff  (0, 1)      1      0        1  1.701079   \n",
       "\n",
       "   lower_3.0%  upper_97.0%  \n",
       "0    0.626193     1.126094  \n",
       "1    1.277529     2.120203  \n",
       "2    0.626193     1.126094  \n",
       "3    0.765103     1.259941  \n",
       "4    0.626193     1.126094  \n",
       "5    0.994530     1.976997  \n",
       "6    0.912043     1.555600  \n",
       "7    0.093172     0.289529  \n",
       "8    0.397932     0.817309  \n",
       "9    1.277529     2.120203  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unit_level = bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    ")\n",
    "\n",
    "# empirical distribution\n",
    "print(unit_level.shape[0] == fish_model.data.shape[0])\n",
    "unit_level.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>livebait</th>\n",
       "      <th>camper</th>\n",
       "      <th>persons</th>\n",
       "      <th>child</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count livebait camper  persons  child\n",
       "0      0        0      0        1      0\n",
       "1      0        1      1        1      0\n",
       "2      0        1      0        1      0\n",
       "3      0        1      1        2      1\n",
       "4      1        1      0        1      0\n",
       "5      0        1      1        4      2\n",
       "6      0        1      0        3      1\n",
       "7      0        1      0        4      3\n",
       "8      0        0      1        3      2\n",
       "9      1        1      1        1      0"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# empirical (observed) data used to fit the model\n",
    "fish_model.data.head(10)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Above, `unit_level` is the comparisons summary dataframe and `fish_model.data` is the empirical data. Notice how the values for $c$ are identical in both dataframes. However, for $w$, the values are different. However, these unit level contrasts are difficult to interpret as each row corresponds to _that_ unit's contrast. Therefore, it is useful to average over (marginalize) the estimates to summarize the unit level predictive comparisons."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Marginalizing over covariates"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since the empirical distrubution is used for computing the average predictive comparisons, the same number of rows (250) is returned as the data used to fit the model. To average over a covariate, use the `average_by` argument. If `True` is passed, then `comparisons` averages over all covariates. Else, if a single or list of covariates are passed, then `comparisons` averages by the covariates passed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3.652172</td>\n",
       "      <td>2.963445</td>\n",
       "      <td>4.331797</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value  estimate  lower_3.0%  upper_97.0%\n",
       "0  livebait          diff  (0, 1)  3.652172    2.963445     4.331797"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# marginalize over all covariates\n",
    "bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    "    average_by=True\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Passing `True` to `average_by` averages over all covariates and is equivalent to taking the mean of the `estimate` and uncertainty columns. For example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "estimate       3.652172\n",
       "lower_3.0%     2.963445\n",
       "upper_97.0%    4.331797\n",
       "dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unit_level = bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    ")\n",
    "\n",
    "unit_level[[\"estimate\", \"lower_3.0%\", \"upper_97.0%\"]].mean()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Average by subgroups\n",
    "\n",
    "Averaging over all covariates may not be desired, and you would rather average by a group or specific covariate. To perform averaging by subgroups, users can pass a single or list of covariates to `average_by` to average over specific covariates. For example, if we wanted to average by `persons`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>persons</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>1.379118</td>\n",
       "      <td>1.026136</td>\n",
       "      <td>1.736512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>1.967518</td>\n",
       "      <td>1.556168</td>\n",
       "      <td>2.392017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3</td>\n",
       "      <td>3.704838</td>\n",
       "      <td>3.062161</td>\n",
       "      <td>4.358546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>4</td>\n",
       "      <td>7.356535</td>\n",
       "      <td>6.043886</td>\n",
       "      <td>8.607420</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value  persons  estimate  lower_3.0%  upper_97.0%\n",
       "0  livebait          diff  (0, 1)        1  1.379118    1.026136     1.736512\n",
       "1  livebait          diff  (0, 1)        2  1.967518    1.556168     2.392017\n",
       "2  livebait          diff  (0, 1)        3  3.704838    3.062161     4.358546\n",
       "3  livebait          diff  (0, 1)        4  7.356535    6.043886     8.607420"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# average by number of persons\n",
    "bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    "    average_by=\"persons\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>term</th>\n",
       "      <th>estimate_type</th>\n",
       "      <th>value</th>\n",
       "      <th>persons</th>\n",
       "      <th>camper</th>\n",
       "      <th>estimate</th>\n",
       "      <th>lower_3.0%</th>\n",
       "      <th>upper_97.0%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.866907</td>\n",
       "      <td>0.626193</td>\n",
       "      <td>1.126094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.701079</td>\n",
       "      <td>1.277529</td>\n",
       "      <td>2.120203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1.426581</td>\n",
       "      <td>1.089569</td>\n",
       "      <td>1.785491</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2.350132</td>\n",
       "      <td>1.886202</td>\n",
       "      <td>2.821023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2.429426</td>\n",
       "      <td>1.893073</td>\n",
       "      <td>2.970221</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>4.448828</td>\n",
       "      <td>3.744129</td>\n",
       "      <td>5.168402</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>3.537199</td>\n",
       "      <td>2.721745</td>\n",
       "      <td>4.370350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>livebait</td>\n",
       "      <td>diff</td>\n",
       "      <td>(0, 1)</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>10.739376</td>\n",
       "      <td>8.986354</td>\n",
       "      <td>12.360254</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       term estimate_type   value  persons camper   estimate  lower_3.0%  \\\n",
       "0  livebait          diff  (0, 1)        1      0   0.866907    0.626193   \n",
       "1  livebait          diff  (0, 1)        1      1   1.701079    1.277529   \n",
       "2  livebait          diff  (0, 1)        2      0   1.426581    1.089569   \n",
       "3  livebait          diff  (0, 1)        2      1   2.350132    1.886202   \n",
       "4  livebait          diff  (0, 1)        3      0   2.429426    1.893073   \n",
       "5  livebait          diff  (0, 1)        3      1   4.448828    3.744129   \n",
       "6  livebait          diff  (0, 1)        4      0   3.537199    2.721745   \n",
       "7  livebait          diff  (0, 1)        4      1  10.739376    8.986354   \n",
       "\n",
       "   upper_97.0%  \n",
       "0     1.126094  \n",
       "1     2.120203  \n",
       "2     1.785491  \n",
       "3     2.821023  \n",
       "4     2.970221  \n",
       "5     5.168402  \n",
       "6     4.370350  \n",
       "7    12.360254  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# average by number of persons and camper by passing a list\n",
    "bmb.interpret.comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    "    average_by=[\"persons\", \"camper\"]\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is still possible to use `plot_comparisons` when passing an argument to `average_by`. In the plot below, the empirical distribution is used to compute unit level contrasts for `livebait` and then averaged over `persons` to obtain the average predictive comparisons. The plot below is similar to the second plot in this notebook. The differences being that: (1) a pairwise transition grid is defined for the second plot above, whereas the empirical distribution is used in the plot below, and (2) in the plot below, we marginalized over the other covariates in the model (thus the reason for not having a `camper` or `child` group and panel, and a reduction in the uncertainty interval)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = bmb.interpret.plot_comparisons(\n",
    "    model=fish_model,\n",
    "    idata=fish_idata,\n",
    "    contrast=\"livebait\",\n",
    "    conditional=None,\n",
    "    average_by=\"persons\"\n",
    ")\n",
    "fig.set_size_inches(7, 3)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Logistic Regression\n",
    "\n",
    "To showcase an additional functionality of `comparisons` and `plot_comparisons`, we fit a logistic regression model to the [titanic dataset](https://vincentarelbundock.github.io/Rdatasets/csv/Stat2Data/Titanic.csv) with interaction terms to model the probability of survival. The titanic dataset gives the values of four categorical attributes for each of the 2201 people on board the Titanic when it struck an iceberg and sank. The attributes are social class (first class, second class, third class, crewmember), age, sex (0 = female, 1 = male), and whether or not the person survived (0 = deceased, 1 = survived). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "dat = pd.read_csv(\"https://vincentarelbundock.github.io/Rdatasets/csv/Stat2Data/Titanic.csv\", index_col=0)\n",
    "\n",
    "dat[\"PClass\"] = dat[\"PClass\"].str.replace(\"[st, nd, rd]\", \"\", regex=True)\n",
    "dat[\"PClass\"] = dat[\"PClass\"].str.replace(\"*\", \"0\").astype(int)\n",
    "dat[\"PClass\"] = dat[\"PClass\"].replace(0, np.nan)\n",
    "dat[\"PClass\"] = pd.Categorical(dat[\"PClass\"], ordered=True)\n",
    "dat[\"SexCode\"] = pd.Categorical(dat[\"SexCode\"], ordered=True)\n",
    "\n",
    "dat = dat.dropna(axis=0, how=\"any\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Modeling the probability that Survived==1\n",
      "Initializing NUTS using jitter+adapt_diag...\n",
      "Multiprocess sampling (4 chains in 4 jobs)\n",
      "NUTS: [Intercept, PClass, SexCode, PClass:SexCode, Age, PClass:Age, SexCode:Age, PClass:SexCode:Age]\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "43a8792bdbc04e94a4babe6ae9996338",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Sampling 4 chains for 500 tune and 500 draw iterations (2_000 + 2_000 draws total) took 5 seconds.\n"
     ]
    }
   ],
   "source": [
    "titanic_model = bmb.Model(\n",
    "    \"Survived ~ PClass * SexCode * Age\",\n",
    "    data=dat,\n",
    "    family=\"bernoulli\"\n",
    ")\n",
    "titanic_idata = titanic_model.fit(\n",
    "    draws=500,\n",
    "    tune=500,\n",
    "    target_accept=0.95,\n",
    "    random_seed=1234\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Comparison types\n",
    "\n",
    "`comparisons` and `plot_comparisons` also allow you to specify the type of comparison to be computed. By default, a difference is used. However, it is also possible to take the ratio where comparisons would then become _average predictive ratios_. To achieve this, pass `\"ratio\"` into the argument `comparison_type`. Using different comparison types offers a way to produce alternative insights; especially when there are interaction terms as the value of one covariate depends on the value of the other covariate."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+kAAAE6CAYAAABqCBPXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhe5JREFUeJzs3XecXXWB///Xub3N3OktmUwqqSRAQglFRKSJfV2xYsHvfvmqqy5blN3HT9TVxS/7ddfd/QqrKxYUkbXjVxAiUkSkBQIJKaRPkun19n5+f3ympkDKZO7cO+/n43G495577p3PSYZ8zvt8mmXbto2IiIiIiIiIFJ2j2AUQEREREREREUMhXURERERERGSGUEgXERERERERmSEU0kVERERERERmCIV0ERERERERkRlCIV1ERERERERkhlBIFxEREREREZkhFNJFREREREREZgiFdBEREREREZEZQiFdZJo9/fTTvOMd72DevHl4vV4aGxtZv349f/3Xf33af3Y6neb//t//y8UXX0x1dTUej4c5c+bw7ne/m8cee2zKfs6jjz6KZVk8+uijU/adU+3HP/4xZ511Fj6fj5aWFj7zmc8Qi8WKXSwRESkDquuL76677uI973kPS5cuxeFwMH/+/GIXSeS4KaSLTKPf/OY3XHjhhUQiEW677TYeeugh/u3f/o2LLrqIe++997T+7L6+Pi666CJuuukmVq1axfe+9z0efvhhvva1r+F0Orn88st58cUXT2sZZoq7776b9773vZx77rk88MAD3HLLLXzve9/jne98Z7GLJiIiJU51/czwgx/8gJdffpnzzjuPRYsWFbs4IifEsm3bLnYhRGaLSy+9lEOHDrF9+3ZcLtek9wqFAg7H6btv9qY3vYkNGzbw4IMP8oY3vOGI95999lkaGxuZN2/eKf+sRx99lMsuu4xHHnmE17/+9af8fVMpn8/T2trKmWeeyYMPPji2/0c/+hHvf//7uf/++7nmmmuKWEIRESllqutnhol/1m9+85vZsmUL+/btK26hRI6TWtJFplF/fz91dXVHVNrAUSvte++9l/Xr1xMMBgmFQlx11VW88MILY+8/8cQTuN1u/uZv/mbS5773ve9hWRZ33nknABs3buSBBx7ghhtuOGqlDXDuuedOqrS3bNnC2972Nqqrq/H5fJx11ll8//vfP+Jz27dv5+qrryYQCFBXV8eNN95INBo96s/43e9+x+WXX05lZSWBQICLLrqIhx9++KjHni5PPfUUnZ2dfOQjH5m0/8///M8JhUL84he/mNbyiIhIeVFdX/y6Ho7+Zy1SKvTbKzKN1q9fz9NPP82nPvUpnn76abLZ7DGP/ad/+ife+973smLFCv77v/+bH/zgB0SjUS655BK2bt0KwMUXX8yXv/xlvva1r3HfffcB8PLLL/OJT3yCD3zgA9xwww0APPTQQwC8/e1vP65y7tixgwsvvJCXX36Zf//3f+fnP/85K1as4MMf/jC33Xbb2HHd3d1ceumlbNmyhdtvv50f/OAHxGIxPvnJTx7xnT/84Q+58sorqays5Pvf/z7//d//TU1NDVddddVxVd65XO64ttfqHLRlyxYAVq9ePWm/2+1m2bJlY++LiIicDNX1xa/rRUqeLSLTpq+vz7744ottwAZst9ttX3jhhfatt95qR6PRsePa29ttl8tl/+Vf/uWkz0ejUbupqcl+97vfPbavUCjYb3rTm+yqqip7y5Yt9ooVK+xly5bZsVhs7Jgbb7zRBuzt27cfVznf85732F6v125vb5+0/5prrrEDgYA9NDRk27Ztf/azn7Uty7I3bdo06bgrrrjCBuxHHnnEtm3bjsfjdk1Njf2Wt7xl0nH5fN5es2aNfd55571mmUb/zF5r++53v/uq3/OVr3zFBuzOzs4j3rvyyivtM8444zXLIiIiciyq64tf1x/u2muvtdva2k7oMyLFdGQ/HBE5bWpra/nDH/7Ac889x8MPP8xzzz3Ho48+ys0338w3v/lNnn32Werq6njwwQfJ5XJcf/315HK5sc/7fD4uvfRSHnnkkbF9lmVx1113cfbZZ7Nu3Tosy+Lpp58mGAyedDl///vfc/nll9Pa2jpp/4c//GEeeOAB/vSnP3H11VfzyCOPsHLlStasWTPpuPe9731s2LBh7PWTTz7JwMAAH/rQhyadD8DVV1/NbbfdRjwef9UyP/vss8dV9gULFhzXcZZlndB+ERGR46G6fubU9SKlSiFdpAjWrVvHunXrAMhms3z2s5/lX//1X7ntttu47bbb6O7uBszYsaM5fJxVbW0tb33rW/nGN77BO97xDs4888xJ74+OP9u7dy9Lly59zfL19/fT3Nx8xP6Wlpax90cfj1ZRNjU1TXo9ej7vete7jvkzBwYGXrXiPuuss16z3ABOp/NV36+trQVM2RsbG48oQ01NzXH9HBERkVejuv5I01XXi5Q6hXSRInO73dxyyy3867/+69h46Lq6OgB++tOf0tbW9prfsWHDBu644w7OO+88fvGLX/Czn/2MP/uzPxt7/6qrruLv//7v+eUvf8nVV1/9mt9XW1tLZ2fnEfs7Ojomla+2tpaurq4jjjt83+jx//Ef/8EFF1xw1J95eGA+nNvtfs1yA3z3u9/lwx/+8DHfH72o2bx5MytWrBjbn8vl2L59O+9973uP6+eIiIgcL9X1xnTV9SKlTiFdZBp1dnYe9a71tm3bgPG711dddRUul4vdu3dPqoCP9Z0f+MAHuPTSS9mwYQPvfOc7ueGGGzjnnHPG7nyfc845XHPNNdx55528+93vPuqsr8899xwNDQ3MmzePyy+/nF/84hd0dHSMlQngrrvuIhAIjFW+l112GbfddhsvvvjipG5wP/rRjyZ990UXXURVVRVbt2496kQzx2OqusCdf/75NDc3873vfY/rrrtubP9Pf/pTYrGY1koXEZFTorq++HW9SKnTOuki02j16tXMnTuXt7zlLSxbtoxCocCmTZv42te+RjQa5cknnxxr6b311lv5/Oc/zw033MDVV19NdXU13d3dPPPMMwSDQb74xS+Sz+e5/PLL2b59O5s2baKpqYnBwUHOOussGhsbeeKJJ/B4PAD09fVx9dVXs3nzZj760Y9yzTXXUF1dTWdnJ7/+9a+555572LhxI2vWrGHHjh2ce+65NDc38/nPf56amhruvvtu7r77bm677Tb+9m//FjB30VevXo3H4+HLX/4yjY2N3H333Tz++OMcOHBg0tqpP/zhD/nQhz7En//5n/Oud72LhoYGent7efHFF+nt7eWOO+6Ytr+HH/7wh3zwgx/kL/7iL3jve9/Lzp07+bu/+zvOPffcsdlxRURETobq+plR12/dunVshvyvfvWrtLe3c/vttwOwYsWKSb3pRGacYs9cJzKb3Hvvvfb73vc+e8mSJXYoFLLdbrc9b948+4Mf/KC9devWI47/5S9/aV922WV2ZWWl7fV67ba2Nvtd73qX/bvf/c62bdv+h3/4B9vhcNgPP/zwpM89+eSTtsvlsj/96U9P2p9MJu1///d/t9evX29XVlbaLpfLbmlpsd/5znfav/nNbyYdu3nzZvstb3mLHQ6HbY/HY69Zs+aos6lu3brVvuKKK2yfz2fX1NTYN9xwg/2rX/1q0oyvox577DH72muvtWtqamy3223PmTPHvvbaa+2f/OQnJ/6HeYp+9KMf2atXr7Y9Ho/d1NRkf+pTn5o0666IiMjJUF0/M+r6W2655Zizw99yyy3TWhaRE6WWdBEREREREZEZwvHah4iIiIiIiIjIdFBIFxEREREREZkhFNJFREREREREZgiFdBEREREREZEZQiFdREREREREZIZQSBcRERERERGZIVzFLsB0KxQKdHR0UFFRgWVZxS6OiIgItm0TjUZpaWnB4dD986mg+l5ERGaSE6nrZ11I7+jooLW1tdjFEBEROcKBAweYO3dusYtRFlTfi4jITHQ8df2sC+kVFRWA+cOprKwscmlEREQgEonQ2to6VkfJqVN9LyIiM8mJ1PWzLqSPdnmrrKxUpS0iIjOKumVPHdX3IiIyEx1PXa+BbyIiIiIiIiIzhEK6iIiIiIiIyAyhkC4iIiIiIiIyQyiki4iIiIiIiMwQCukiIiIiIiIiM4RCuoiIiIiIiMgMUfSQfvvtt7NgwQJ8Ph9r167lD3/4w6sef/fdd7NmzRoCgQDNzc185CMfob+/f5pKKyIiIiIiInL6FDWk33vvvXzmM5/hH/7hH3jhhRe45JJLuOaaa2hvbz/q8U888QTXX389N9xwAy+//DI/+clPePbZZ/nYxz42zSUft6MrykMvd5HNF4pWBhERERERESkPRQ3p//Iv/8INN9zAxz72MZYvX87Xv/51WltbueOOO456/FNPPcX8+fP51Kc+xYIFC7j44ov5n//zf/Lcc89Nc8nHRVNZnt47wB929mHbdtHKISIiIiIiIqWvaCE9k8mwceNGrrzyykn7r7zySp588smjfubCCy/k4MGD3H///di2TXd3Nz/96U+59tprj/lz0uk0kUhk0jbVEpkcT+7qY+P+wSn/bhEREXlt01Hfi4iITIeihfS+vj7y+TyNjY2T9jc2NtLV1XXUz1x44YXcfffdXHfddXg8HpqamqiqquI//uM/jvlzbr31VsLh8NjW2to6pecB4HM7CXld/H57D9u7dFEgIiIy3aajvhcREZkORZ84zrKsSa9t2z5i36itW7fyqU99is9//vNs3LiR3/72t+zdu5cbb7zxmN9/8803Mzw8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tUf9jNfrxev1Tk2hRUREZEZSfS8iIuWiaC3pHo+HtWvXsmHDhkn7N2zYwIUXXnjUz6xfv/6I4x966CHWrVt31PHoIiIiIiIiIqWkqN3db7rpJr797W/zne98h23btvFXf/VXtLe3j617fvPNN3P99dePHX/jjTeyf/9+brrpJrZt28Z3vvMd7rzzTv7mb/6mWKcgIiIiIiIiMmWKuk76ddddR39/P1/60pfo7Oxk1apV3H///bS1tQHQ2dlJe3v72PELFizg/vvv56/+6q/4xje+QUtLC//+7/+uNdJFRERERESkLBR1nfRi0LqpIiIy06humnr6MxURkZnkROqlos/uLiIiIiIiIiJGUbu7F8Nox4FIJFLkkoiIiBijddIs69x2Wqm+FxGRmeRE6vpZF9Kj0SgAra2tRS6JiIjIZNFolHA4XOxilAXV9yIiMhMdT10/68akFwoFOjo6qKiowLKsU/quSCRCa2srBw4cKKvxbjqv0lKu5wXle246r9IyHedl2zbRaJSWlhYcDo1EmwpTVd/r97q0lOt5Qfmem86r9JTruZ3u8zqRun7WtaQ7HA7mzp07pd9ZWVlZVr+go3RepaVczwvK99x0XqXldJ+XWtCn1lTX9/q9Li3lel5Qvuem8yo95Xpup/O8jreu1+16ERERERERkRlCIV1ERERERERkhlBIPwVer5dbbrkFr9db7KJMKZ1XaSnX84LyPTedV2kp1/OS41Ouf/86r9JTruem8yo95XpuM+m8Zt3EcSIiIiIiIiIzlVrSRURERERERGYIhXQRERERERGRGUIhXURERERERGSGUEgXERERERERmSEU0k/S7bffzoIFC/D5fKxdu5Y//OEPxS7SCXv88cd5y1veQktLC5Zl8ctf/nLS+7Zt84UvfIGWlhb8fj+vf/3refnll4tT2ON06623cu6551JRUUFDQwNvf/vb2bFjx6RjSvG8AO644w5Wr15NZWUllZWVrF+/ngceeGDs/VI9r8PdeuutWJbFZz7zmbF9pXhuX/jCF7Asa9LW1NQ09n4pntOoQ4cO8YEPfIDa2loCgQBnnXUWGzduHHu/VM9t/vz5R/ydWZbFJz7xCaB0z0tOnur6matc63vV9aV1buVc10N51vclU9fbcsJ+/OMf22632/6v//ove+vWrfanP/1pOxgM2vv37y920U7I/fffb//DP/yD/bOf/cwG7F/84heT3v/qV79qV1RU2D/72c/szZs329ddd53d3NxsRyKR4hT4OFx11VX2d7/7XXvLli32pk2b7GuvvdaeN2+eHYvFxo4pxfOybdu+77777N/85jf2jh077B07dth///d/b7vdbnvLli22bZfueU30zDPP2PPnz7dXr15tf/rTnx7bX4rndsstt9grV660Ozs7x7aenp6x90vxnGzbtgcGBuy2tjb7wx/+sP3000/be/futX/3u9/Zu3btGjumVM+tp6dn0t/Xhg0bbMB+5JFHbNsu3fOSk6O6fmb/Xpdrfa+6vrTOrVzretsu3/q+VOp6hfSTcN5559k33njjpH3Lli2zP/e5zxWpRKfu8Iq7UCjYTU1N9le/+tWxfalUyg6Hw/Z//ud/FqGEJ6enp8cG7Mcee8y27fI5r1HV1dX2t7/97bI4r2g0ai9ZssTesGGDfemll45V3KV6brfccou9Zs2ao75Xqudk27b92c9+1r744ouP+X4pn9vhPv3pT9uLFi2yC4VCWZ2XHB/V9aX1e13O9b3q+pl7buVa19v27KnvZ2pdr+7uJyiTybBx40auvPLKSfuvvPJKnnzyySKVaurt3buXrq6uSefp9Xq59NJLS+o8h4eHAaipqQHK57zy+Tw//vGPicfjrF+/vizO6xOf+ATXXnstb3zjGyftL+Vz27lzJy0tLSxYsID3vOc97NmzByjtc7rvvvtYt24df/7nf05DQwNnn302//Vf/zX2fimf20SZTIYf/vCHfPSjH8WyrLI5Lzk+qutL7/e6HOt71fWlcW7lWNfD7KjvZ3Jdr5B+gvr6+sjn8zQ2Nk7a39jYSFdXV5FKNfVGz6WUz9O2bW666SYuvvhiVq1aBZT+eW3evJlQKITX6+XGG2/kF7/4BStWrCj58/rxj3/M888/z6233nrEe6V6bueffz533XUXDz74IP/1X/9FV1cXF154If39/SV7TgB79uzhjjvuYMmSJTz44IPceOONfOpTn+Kuu+4CSvfv63C//OUvGRoa4sMf/jBQPuclx0d1fWmdZ7nV96rrx830cyvXuh5mR30/k+t617T+tDJiWdak17ZtH7GvHJTyeX7yk5/kpZde4oknnjjivVI9r6VLl7Jp0yaGhob42c9+xoc+9CEee+yxsfdL8bwOHDjApz/9aR566CF8Pt8xjyu1c7vmmmvGnp955pmsX7+eRYsW8f3vf58LLrgAKL1zAigUCqxbt45/+qd/AuDss8/m5Zdf5o477uD6668fO64Uz22iO++8k2uuuYaWlpZJ+0v9vOTEzJa/71I/z3Kr71XXj5vp51audT3Mjvp+Jtf1akk/QXV1dTidziPupvT09Bxx16WUjc5MWarn+Zd/+Zfcd999PPLII8ydO3dsf6mfl8fjYfHixaxbt45bb72VNWvW8G//9m8lfV4bN26kp6eHtWvX4nK5cLlcPPbYY/z7v/87LpdrrPyleG4TBYNBzjzzTHbu3FnSf1/Nzc2sWLFi0r7ly5fT3t4OlP7/YwD79+/nd7/7HR/72MfG9pXDecnxU11fOudZjvW96vpxpXBuE5VLXQ/lX9/P9LpeIf0EeTwe1q5dy4YNGybt37BhAxdeeGGRSjX1FixYQFNT06TzzGQyPPbYYzP6PG3b5pOf/CQ///nP+f3vf8+CBQsmvV+q53Ustm2TTqdL+rwuv/xyNm/ezKZNm8a2devW8f73v59NmzaxcOHCkj23idLpNNu2baO5ubmk/74uuuiiI5Y5euWVV2hrawPK4/+x7373uzQ0NHDttdeO7SuH85Ljp7p+5v9ez6b6XnX9zD63icqlrofyr+9nfF0/nbPUlYvRZVnuvPNOe+vWrfZnPvMZOxgM2vv27St20U5INBq1X3jhBfuFF16wAftf/uVf7BdeeGFseZmvfvWrdjgctn/+85/bmzdvtt/73vfO+GUV/tf/+l92OBy2H3300UnLKyQSibFjSvG8bNu2b775Zvvxxx+39+7da7/00kv23//939sOh8N+6KGHbNsu3fM6mokzvtp2aZ7bX//1X9uPPvqovWfPHvupp56y3/zmN9sVFRVj/06U4jnZtlk6x+Vy2V/5ylfsnTt32nfffbcdCATsH/7wh2PHlOq52bZt5/N5e968efZnP/vZI94r5fOSE6e6fmb/Xpdrfa+6vrTOrVzretsu7/q+FOp6hfST9I1vfMNua2uzPR6Pfc4554wt+VFKHnnkERs4YvvQhz5k27ZZWuGWW26xm5qabK/Xa7/uda+zN2/eXNxCv4ajnQ9gf/e73x07phTPy7Zt+6Mf/ejY71x9fb19+eWXj1Xatl2653U0h1fcpXhuo+tqut1uu6WlxX7nO99pv/zyy2Pvl+I5jfr1r39tr1q1yvZ6vfayZcvsb33rW5PeL+Vze/DBB23A3rFjxxHvlfJ5yclRXT9zlWt9r7q+tM6tnOt62y7f+r4U6nrLtm17ulrtRUREREREROTYNCZdREREREREZIZQSBcRERERERGZIRTSRURERERERGYIhXQRERERERGRGUIhXURERERERGSGUEgXERERERERmSEU0kVERERERERmCIV0ERERERERkRlCIV1ERERERERkhlBIF5EjPPnkkzidTq6++upiF0VEREROE9X3IjOTZdu2XexCiMjM8rGPfYxQKMS3v/1ttm7dyrx584pdJBH5/9u7f5BUvziO4x+hKCkwaJKoqbBJKDCCqAgkl4aoyIYIIkKCMMKlsLacoinoz1BZEGGERJBLU2ANUSBKRDgU1NSQLm6id7hc+T2/7h3i3pvP78f7BQ6P5zwP50wfvp7zHAHgDyPvAXNiJR2AQS6X0/HxsWZmZjQwMKBwOGxoPzs7U0tLi6xWq/r6+rS/vy+LxaJsNlvqc319rZ6eHlmtVjU2Nsrv9yuXy33tRAAAwC+R94B5UaQDMIhEInI4HHI4HBofH9fe3p5+bLh5fn7WyMiIBgcHlUgk5PP5FAwGDfenUil5PB4NDQ0pmUwqEokoHo9rdna2HNMBAAA/Qd4D5sV2dwAGXV1dGh0d1dzcnPL5vOx2u46OjuR2u7WwsKDz83OlUqlS/6WlJYVCIWUyGdXV1WliYkJWq1Xb29ulPvF4XL29vcrlcqquri7HtAAAwD+Q94B5sZIOoOTx8VE3NzcaGxuTJFVUVMjr9Wp3d7fU7nK5DPd0dHQYru/u7hQOh1VbW1v6eDweFQoFPT09fc1EAADAL5H3gLlVlHsAAMxjZ2dH+XxeDQ0Npe+KxaIqKyuVyWRULBZlsVgM9/x7M06hUJDP55Pf7//wfA6kAQCg/Mh7wNwo0gFIkvL5vA4ODrS2tqb+/n5D2/DwsA4PD9Xa2qpYLGZou729NVy3t7fr/v5ezc3Nf33MAADgc8h7wPx4Jx2AJOn09FRer1dvb2+y2WyGtmAwqFgspmg0KofDofn5eU1NTSmRSCgQCOj19VXZbFY2m03JZFKdnZ2anJzU9PS0ampq9PDwoIuLC62vr5dpdgAAQCLvgf8C3kkHIOn71je32/0hsKXvv6wnEgllMhmdnJwoGo3K6XRqc3OzdNprVVWVJMnpdOry8lLpdFrd3d1qa2vT8vKy7Hb7l84HAAB8RN4D5sdKOoDfEgqFtLW1pZeXl3IPBQAA/CXkPfB1eCcdwKdsbGzI5XKpvr5eV1dXWl1d5T9RAQD4nyHvgfKhSAfwKel0WisrK3p/f1dTU5MCgYAWFxfLPSwAAPAHkfdA+bDdHQAAAAAAk+DgOAAAAAAATIIiHQAAAAAAk6BIBwAAAADAJCjSAQAAAAAwCYp0AAAAAABMgiIdAAAAAACToEgHAAAAAMAkKNIBAAAAADCJb6JlpNMA/B9eAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = bmb.interpret.plot_comparisons(\n",
    "    model=titanic_model,\n",
    "    idata=titanic_idata,\n",
    "    contrast={\"PClass\": [1, 3]},\n",
    "    conditional=[\"Age\", \"SexCode\"],\n",
    "    comparison_type=\"ratio\",\n",
    "    subplot_kwargs={\"main\": \"Age\", \"group\": \"SexCode\", \"panel\": \"SexCode\"},\n",
    "    fig_kwargs={\"figsize\":(12, 3), \"sharey\": True},\n",
    "    legend=False\n",
    "\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The left panel shows that the ratio of the probability of survival comparing `PClass` $3$ to $1$ conditional on `Age` is non-constant. Whereas the right panel shows an approximately constant ratio in the probability of survival comparing `PClass` $3$ to $1$ conditional on `Age`. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Last updated: Sun Sep 28 2025\n",
      "\n",
      "Python implementation: CPython\n",
      "Python version       : 3.13.7\n",
      "IPython version      : 9.4.0\n",
      "\n",
      "bambi : 0.14.1.dev58+gb25742785.d20250928\n",
      "arviz : 0.22.0\n",
      "pandas: 2.3.2\n",
      "numpy : 2.3.3\n",
      "\n",
      "Watermark: 2.5.0\n",
      "\n"
     ]
    }
   ],
   "source": [
    "%load_ext watermark\n",
    "%watermark -n -u -v -iv -w"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "dev",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
